<!DOCTYPE html>
<!--
     SPDX-License-Identifier: CC-BY-SA-4.0
     SPDX-FileCopyrightText: 2020 seL4 Project a Series of LF Projects, LLC.
-->
<!-- Page last generated 2025-02-20 03:16:15 +0000 -->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>seL4 Manual API Generation | seL4 docs</title>

    <!-- Our stylesheet and theme stylesheet.  Contains bootstrap. -->
    <link rel="stylesheet" href="/assets/css/style.css" type="text/css">
    <!-- Font awesome -->
    <link href="https://use.fontawesome.com/releases/v5.0.8/css/all.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
    <!-- Pygments syntax highlighting  -->
    <link rel="stylesheet" href="/assets/css/highlighting/trac.css" type="text/css">
    <link rel="icon" type="image/x-icon" href="/assets/favicon.ico"><script defer data-domain="docs.sel4.systems"
	    src="https://analytics.sel4.systems/js/script.js"></script></head>

  <body class="container-fluid">

    



<header>
  <ul class="row menu">
    <li class="col-xs-12 col-md-2" >
            <a href="https://sel4.systems" class="skip-icon">
              <img class="img-responsive" src="/assets/logo-text-white.svg" alt="seL4 logo" />
            </a>
    </li>
    <li class="col-xs-12 col-md-10 menu">
      <nav aria-label="Banner links">
        <h2><a href="/Resources" />Resources</h2>
        <h2><a href="/processes" />Contributing</a></h2>
        <h2><a href="/projects" />Projects</h2>
        <h2><a href="/Tutorials" />Tutorials</h2>
        <iframe title="DuckDuckGo search bar" src="https://duckduckgo.com/search.html?site=docs.sel4.systems&prefill=Search%20sel4.systems" style="overflow:hidden;margin-bottom:10px; padding:0;height:40px;float:right;border-width: 0px"></iframe>
      </nav>
    </li>
  </ul>
  <div class="clear"></div>
  
<div class="breadcrumbs bootstrap hidden-sm-down">
  <nav class="sel-breadcrumb" aria-label="Breadcrumb" >
    <ol class=" list-unstyled" vocab="http://schema.org/" typeof="BreadcrumbList">
      
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/">
              <span property="name"><b>seL4 Docs</b></span>
            </a>
            <meta property="position" content="1" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/projects/">
              <span property="name"><b>Projects</b></span>
            </a>
            <meta property="position" content="2" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/projects/sel4/">
              <span property="name"><b>The seL4 microkernel</b></span>
            </a>
            <meta property="position" content="3" />
        </li>
      
        

        
          <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <span property="name">seL4 Manual API Generation</span>
            <meta property="position" content="4" /></li>
          
    </ol>
  </nav>
  <nav class="sel-version" aria-label="Current Versions">
    <ol class="list-unstyled">
      <li class="list-unstyled text-right" style="margin-left:auto; padding:0rem 0rem;">
        Current versions:</li>
      <li class="list-unstyled text-right">
      <a href="/releases/sel4/13.0.0"><b>seL4-13.0.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/microkit/1.4.1"><b>microkit-1.4.1</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/camkes/camkes-3.11.0"><b>camkes-3.11.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/capdl/0.3.0"><b>capDL-0.3.0</b></a></li>
      </ol>
  </nav>
  <div class='clear'></div>
</div>


</header>

    <main>
      <div class="row">
  <div class="hidden-xs col-sm-4 col-md-3 col-lg-2">
    


<div class="sidebar">















    <ul class="nav nav-sidebar">
  
    
    

    
        <li class="active">
            <a class="" href="/projects/sel4/">seL4</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/l4v/">L4.verified</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/camkes/">CAmkES</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/capdl/">CapDL</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/elfloader/">Elfloader</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/buildsystem/">seL4 Buildsystem</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/user_libs/">user_libs</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4runtime/">The seL4 run-time</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4webserver/">seL4webserver</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4-tutorials/">seL4 tutorials</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4bench/">sel4bench</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4test/">seL4Test</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/virtualization/">Virtualization</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/camkes-vm/">camkes-vm</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/dockerfiles/">Dockerfiles</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/docsite/">seL4 Documentation website</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/sel4_tools/">seL4_tools</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/microkit/">Microkit</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/hardware_hacks/">Hardware Hacks</a>
        </li>
  
    
    

    
        <li class="">
            <a class="" href="/projects/rust/">Rust</a>
        </li>
  
    </ul>


</div>

  </div>
  <div class="content col-sm-8 col-md-6 col-lg-7 main">
    <h1 id="sel4-manual-api-generation">seL4 Manual API Generation</h1>

<p>The documentation of the seL4 API in the
<a href="http://sel4.systems/Info/Docs/seL4-manual-latest.pdf">seL4 manual</a> is automatically generated from comments in
<a href="https://github.com/seL4/seL4/tree/master/libsel4">libsel4</a>’s
source code. This page documents this process.</p>

<h2 id="file-paths">File Paths</h2>

<p>This page will use file paths relative to the root of the
<a href="https://github.com/seL4/seL4">seL4 repository</a>. In projects
cloned using a repo manifest, this will correspond to the <code class="language-plaintext highlighter-rouge">kernel</code>
subdirectory of the top-level directory.</p>

<h2 id="types-of-api">Types of API</h2>

<p>seL4 has two types of API:</p>

<ul>
  <li>System Calls, mostly concerned with message-passing between threads. Some examples are <code class="language-plaintext highlighter-rouge">Send</code> and <code class="language-plaintext highlighter-rouge">Recv</code>
    <ul>
      <li>In addition to the message-passing syscalls, there are
debugging and benchmarking syscalls which can be enabled with a
build flag. These are true syscalls, rather than object invocations.</li>
    </ul>
  </li>
  <li>Object Invocations, which are regular message-passing system
calls, but whose recipient is effectively the kernel itself, and
the message encodes some operation on a Kernel Object. Some
examples are <code class="language-plaintext highlighter-rouge">TCB_Resume</code> and <code class="language-plaintext highlighter-rouge">CNode_Copy</code>.
    <ul>
      <li>Some kernel objects and object invocations are specific to a
particular processor architecture. Some examples are
<code class="language-plaintext highlighter-rouge">X86_Page_Map</code>, and <code class="language-plaintext highlighter-rouge">ARM_VCPU_InjectIrq</code>.</li>
    </ul>
  </li>
</ul>

<p>The API documentation in the manual is divided into the following hierarchy:</p>

<ul>
  <li>System Calls
    <ul>
      <li>General System Calls</li>
      <li>Debugging System Calls</li>
      <li>Benchmarking System Calls</li>
    </ul>
  </li>
  <li>Architecture-Independent Object Methods</li>
  <li>x86-Specific Object Methods
    <ul>
      <li>General x86 Object Methods</li>
      <li>IA32 Object Methods</li>
      <li>x86_64 Object Methods</li>
    </ul>
  </li>
  <li>ARM-Specific Object Methods
    <ul>
      <li>General ARM Object Methods</li>
      <li>aarch32 Object Methods</li>
      <li>aarch64 Object Methods</li>
    </ul>
  </li>
</ul>

<p>The process of generating API docs is different between System Calls and
Object Invocations, though each process has some parts in common.</p>

<h2 id="common">Common</h2>

<h3 id="approach">Approach</h3>

<p>Documentation for each seL4 API is written in the form of doxygen
comments in C header files. The rest of the seL4 manual is written in
LaTeX. To generate API documentation for the manual, we generate LaTeX
files from doxygen comments which are then included in the manual.</p>

<p>Rather than using doxygen’s LaTeX output directly, we use doxygen to
generate XML files. A custom script then parses the XML and produces the
final LaTeX output. This is because we already have an established style
for API documentation in our manual, and it was easier to generate LaTeX
in this style ourselves from some simple (ie. easy to parse)
intermediate format (ie. XML) rather than try to coerce doxygen into
generating perfectly-styled LaTeX.</p>

<p>The script that translates doxygen-generated xml into LaTeX is in:
<a href="https://github.com/seL4/seL4/blob/master/manual/tools/parse_doxygen_xml.py">manual/tools/parse_doxygen_xml.py</a>.</p>

<h3 id="custom-notation-in-doxygen-comments">Custom Notation in Doxygen Comments</h3>

<p>Some parts of the API documentation reference other parts of the manual.
Additionally, there are some custom formatting rules we’d like to apply
to the API docs in the manual that aren’t understood by doxygen. To
achieve both these goals, we introduce some additional XML tags which we
explicitly add to doxygen comments inside @xmlonly … @endxmlonly
blocks.</p>

<p>Here’s a description of all the custom tags:</p>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">&lt;!--
Introduces documentation for a new function.
The title of the section documenting the function will be NAME.
Other parts of the manual can refer to this function's documentation with \autoref{sec:LABEL}
--&gt;</span>
<span class="nt">&lt;manual</span> <span class="na">name=</span><span class="s">"NAME"</span> <span class="na">label=</span><span class="s">"LABEL"</span><span class="nt">/&gt;</span>

<span class="c">&lt;!-- Translated to the latex \autoref{sec:SEC} --&gt;</span>
<span class="nt">&lt;autoref</span> <span class="na">sec=</span><span class="s">"SEC"</span><span class="nt">/&gt;</span>

<span class="c">&lt;!-- Translated to the latex \ref{sec:SEC} --&gt;</span>
<span class="nt">&lt;shortref</span> <span class="na">sec=</span><span class="s">"SEC"</span><span class="nt">/&gt;</span>

<span class="c">&lt;!-- Translated to the latex \errorenumdesc, a custom command defined in manual/parts/api.tex &lt;https://github.com/seL4/seL4/blob/master/manual/parts/api.tex&gt; --&gt;</span>
<span class="nt">&lt;errorenumdesc/&gt;</span>

<span class="c">&lt;!-- Translated to the latex \obj{NAME}, a custom command defined in manual/manual.tex &lt;https://github.com/seL4/seL4/blob/master/manual/manual.tex&gt; --&gt;</span>
<span class="nt">&lt;obj</span> <span class="na">name=</span><span class="s">"NAME"</span><span class="nt">/&gt;</span>

<span class="c">&lt;!-- Translated to the latex \texttt{TEXT} --&gt;</span>
<span class="nt">&lt;texttt</span> <span class="na">text=</span><span class="s">"TEXT"</span><span class="nt">/&gt;</span>
</code></pre></div></div>

<p>Note that these must appear within @xmlonly … @endxmlonly blocks in
order to function.</p>

<h3 id="required-documentation">Required Documentation</h3>

<p>Each function in the API must have the following documentation:</p>

<ul>
  <li>a <code class="language-plaintext highlighter-rouge">@xmlonly &lt;manual name="..." label=".../&gt; @endxmlonly</code> tag
      with the <code class="language-plaintext highlighter-rouge">name</code> for use in the manual’s text, and a <code class="language-plaintext highlighter-rouge">label</code> for
      creating references within the manual</li>
  <li>a <code class="language-plaintext highlighter-rouge">@brief</code> description</li>
  <li>a detailed description</li>
  <li>a <code class="language-plaintext highlighter-rouge">@param</code> description of each argument</li>
  <li>a <code class="language-plaintext highlighter-rouge">@return</code> description of the return value, unless the function
      is <code class="language-plaintext highlighter-rouge">void</code></li>
</ul>

<h3 id="detecting-missing-documentation">Detecting Missing Documentation</h3>

<p>If a required part of a function’s documentation is empty, the
translation script will insert the LaTeX command <code class="language-plaintext highlighter-rouge">\todo</code>, defined in
<a href="https://github.com/seL4/seL4/blob/master/manual/parts/api.tex">manual/parts/api.tex</a>.
It generates the text “TODO” to help readers of the manual identify
which parts of the API are undocumented.</p>

<h3 id="generated-latex-files">Generated LaTeX Files</h3>

<p>The LaTeX files generated by the translation script are placed in
<code class="language-plaintext highlighter-rouge">manual/generated</code>. Doxygen-generated XML files are placed in
<code class="language-plaintext highlighter-rouge">manual/doxygen-output/xml</code>.</p>

<p>Each API is documented in a separate file. The separation of APIs is
implemented using doxygen’s <code class="language-plaintext highlighter-rouge">@defgroup</code> directive. Specifically, each API
is defined in a separate named group. In the doxygen-generated XML, each
group’s documentation is in a separate file. The XML-to-LaTeX script
then transforms each relevant XML file into the corresponding LaTeX
file.</p>

<h3 id="doxygen-configuration">Doxygen Configuration</h3>

<p>The correct behaviour of the manual build system depends on a specific
doxygen configuration. A <code class="language-plaintext highlighter-rouge">Doxyfile</code> containing this configuration is
checked into the kernel repo at
<a href="https://github.com/seL4/seL4/blob/master/manual/Doxyfile">manual/Doxyfile</a></p>

<h2 id="system-calls">System Calls</h2>

<p>A prototype for each system call is declared in
<a href="https://github.com/seL4/seL4/blob/master/libsel4/include/sel4/syscalls.h">libsel4/include/sel4/syscalls.h</a>.
Each function is documented with a comment of the form described above.</p>

<h2 id="object-invocations">Object Invocations</h2>

<h3 id="stub-generation">Stub Generation</h3>

<p>These are more complicated, as the C source code implementing the user-level object invocations functions is generated from some interface descriptions in XML. The following XML files contain object invocation interface descriptions:</p>

<ul>
  <li><a href="https://github.com/seL4/seL4/blob/master/libsel4/include/interfaces/sel4.xml">libsel4/include/interfaces/sel4.xml</a></li>
  <li><a href="https://github.com/seL4/seL4/blob/master/libsel4/arch_include/x86/interfaces/sel4arch.xml">libsel4/arch_include/x86/interfaces/sel4arch.xml</a></li>
  <li><a href="https://github.com/seL4/seL4/blob/master/libsel4/arch_include/arm/interfaces/sel4arch.xml">libsel4/arch_include/arm/interfaces/sel4arch.xml</a></li>
  <li><a href="https://github.com/seL4/seL4/blob/master/libsel4/sel4_arch_include/ia32/interfaces/sel4arch.xml">libsel4/sel4_arch_include/ia32/interfaces/sel4arch.xml</a></li>
  <li><a href="https://github.com/seL4/seL4/blob/master/libsel4/sel4_arch_include/x86_64/interfaces/sel4arch.xml">libsel4/sel4_arch_include/x86_64/interfaces/sel4arch.xml</a></li>
  <li><a href="https://github.com/seL4/seL4/blob/master/libsel4/sel4_arch_include/aarch32/interfaces/sel4arch.xml">libsel4/sel4_arch_include/aarch32/interfaces/sel4arch.xml</a></li>
  <li><a href="https://github.com/seL4/seL4/blob/master/libsel4/sel4_arch_include/aarch64/interfaces/sel4arch.xml">libsel4/sel4_arch_include/aarch64/interfaces/sel4arch.xml</a></li>
</ul>

<p>There is a script in the sel4 repo for generating C header files from a
given interface description:
<a href="https://github.com/seL4/seL4/blob/master/libsel4/tools/syscall_stub_gen.py">libsel4/tools/syscall_stub_gen.py</a>.
Note that despite its name, the script generates object invocation stubs - not syscall stubs.</p>

<h3 id="documentation">Documentation</h3>

<p>Object invocation API documentation is located inline with the interface
descriptions in the XML files listed above. The XML language with which
the interfaces are described contains tags for documenting functions.
For the purpose of validation, the XML schema defining this language is
in:
<a href="https://github.com/seL4/seL4/blob/master/libsel4/tools/sel4_idl.xsd">libsel4/tools/sel4_idl.xsd</a>.
This is a superset of the XML tags used in doxygen comments. The doxygen
comment tags described above have the same meaning in the interface
description files. Additional tags are used for the description and
documentation of object invocation interfaces.</p>

<p>When C code is generated from an interface description file, the
documentation inlined in that file is converted into doxygen comments of
the form described above.</p>

  </div>







  
    
<div class="sidebar-toc hidden-xs hidden-sm col-md-3 col-lg-3">
    <ul id="toc" class="section-nav">
<li class="toc-entry toc-h2"><a href="#file-paths">File Paths</a></li>
<li class="toc-entry toc-h2"><a href="#types-of-api">Types of API</a></li>
<li class="toc-entry toc-h2"><a href="#common">Common</a>
<ul>
<li class="toc-entry toc-h3"><a href="#approach">Approach</a></li>
<li class="toc-entry toc-h3"><a href="#custom-notation-in-doxygen-comments">Custom Notation in Doxygen Comments</a></li>
<li class="toc-entry toc-h3"><a href="#required-documentation">Required Documentation</a></li>
<li class="toc-entry toc-h3"><a href="#detecting-missing-documentation">Detecting Missing Documentation</a></li>
<li class="toc-entry toc-h3"><a href="#generated-latex-files">Generated LaTeX Files</a></li>
<li class="toc-entry toc-h3"><a href="#doxygen-configuration">Doxygen Configuration</a></li>
</ul>
</li>
<li class="toc-entry toc-h2"><a href="#system-calls">System Calls</a></li>
<li class="toc-entry toc-h2"><a href="#object-invocations">Object Invocations</a>
<ul>
<li class="toc-entry toc-h3"><a href="#stub-generation">Stub Generation</a></li>
<li class="toc-entry toc-h3"><a href="#documentation">Documentation</a></li>
</ul>
</li>
</ul>
</div>

  
  
<div class="sidebar-toc hidden-xs hidden-sm col-md-3 col-lg-3">
  
    <ul class="section-nav">
    	<h2> seL4 </h2> 
        <li>
          
          <a style="" class="" href="/projects/sel4/">
            Documentation homepage
          </a>
        </li>




        <li>
          
          <a style="" class="" href="/projects/sel4/status.html">
            Status
          </a>
        </li>














    
        <h3>Repositories</h3>
    
        <li>
          <a class="" href="https://github.com/seL4/sel4">
            sel4
          </a>
        </li>









<h3>Releases</h3>

    
      <li>
        <a style="" href="/releases/sel4/13.0.0.html">
          seL4 13.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-13.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/12.1.0.html">
          seL4 12.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-12.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/12.0.0.html">
          seL4 12.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-12.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/11.0.0.html">
          seL4 11.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-11.0.0.pdf">manual</a>)
      </li>

    


    


    
      <li>
        <a style="" href="/releases/sel4/10.1.1.html">
          seL4 10.1.1
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-10.1.1.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/10.1.0.html">
          seL4 10.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-10.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/10.0.0.html">
          seL4 10.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-10.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/9.0.1.html">
          seL4 9.0.1
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-9.0.1.pdf">manual</a>)
      </li>

    


    


    
      <li>
        <a style="" href="/releases/sel4/9.0.0.html">
          seL4 9.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-9.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/8.0.0.html">
          seL4 8.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-8.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/7.0.0.html">
          seL4 7.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-7.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/6.0.0.html">
          seL4 6.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-6.0.0.pdf">manual</a>)
      </li>

    


    


    
      <li>
        <a style="" href="/releases/sel4/5.2.0.html">
          seL4 5.2.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-5.2.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/5.1.0.html">
          seL4 5.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-5.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/5.0.0.html">
          seL4 5.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-5.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/4.0.0.html">
          seL4 4.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-4.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/3.2.0.html">
          seL4 3.2.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-3.2.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/3.1.0.html">
          seL4 3.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-3.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/3.0.1.html">
          seL4 3.0.1
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-3.0.1.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/3.0.0.html">
          seL4 3.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-3.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/2.1.0.html">
          seL4 2.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-2.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/2.0.0.html">
          seL4 2.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-2.0.0.pdf">manual</a>)
      </li>

    


    


    










    </ul>

</div>


</div>

    </main>
    


<footer class="site-footer">

  <h2 class="footer-heading">seL4 docs</h2>

  <div class="footer-col-wrapper">

    <div class="col-md-2">
      



<ul class="social-media-list">
  <li><a href="https://github.com/sel4"><i class="fab fa-github"></i> <span class="username">sel4</span></a></li><li><a href="https://github.com/sel4proj"><i class="fab fa-github"></i> <span class="username">sel4proj</span></a></li>
</ul>

    </div>

    <div class="col-md-8">
      <ul class="list-unstyled">
        <li>
          This site is for displaying seL4 related documentation.  Pull requests are welcome.
        </li>
        
          <li>
            Site last updated: Fri Feb 7 10:17:38 2025 +1100 ee78c8857c
          </li>
          <li>
                Page last updated: Wed Mar 23 08:57:48 2022 +1100 ddb17ed2be
          </li>
        
      </ul>
    </div>
    <div class="col-md-2">
<a href="https://github.com/seL4/docs/blob/master/projects/sel4/manual-api-generation.md">View page on GitHub</a>
      <br />
      <a href="https://github.com/seL4/docs/edit/master/projects/sel4/manual-api-generation.md">Edit page on GitHub</a>
      <br />
      <a href="/sitemap">Sitemap</a>
    </div>

  </div>

</footer>

  </body>
</html>
